package java学习.第16章_网络编程;

import org.junit.Test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * URL网络编程
 * //需要使此链接可以使用，比如弄个tomcat启动
 * 1.URL:统一资源定位符，对应着互联网的某一资源地址
 * 2.格式：
 *  http://localhost:8080/examples/beauty.jpg?username=Tom
 *  协议   主机名     端口号  资源地址             参数列表
 *
 */
public class G_URL {
    /**
     * 该URL的协议名:http
     * 该URL的主机名:localhost
     * 该URL的端口号:8080
     * URL的文件路径:/examples/beauty.jpg
     * URL的文件名:/examples/beauty.jpg?username=Tom
     * URL的查询名:username=Tom
     */
    public static void main(String[] args) throws Exception {
        URL url = new URL("https://localhost:8080/untitled/File/1.jpg?username=Tom");

        System.out.println("该URL的协议名:\t"+url.getProtocol());//获取该URL的协议名
        System.out.println("该URL的主机名:\t"+url.getHost());//获取该URL的主机名
        System.out.println("该URL的端口号:\t"+url.getPort());//获取该URL的端口号
        System.out.println("URL的文件路径:\t"+url.getPath());//获取该URL的文件路径
        System.out.println("URL的文件名:\t\t"+url.getFile());// 获取该URL的文件名
        System.out.println("URL的查询名:\t\t"+url.getQuery());//获取该URL的查询名

    }
    @Test
    public void URL(){
        HttpURLConnection urlConnection = null;
        InputStream is = null;
        FileOutputStream fos = null;
        try {
            URL url = new URL("http://localhost:8080/untitled/File/1.jpg");//资源位置

            urlConnection = (HttpURLConnection) url.openConnection();//获取关于服务器的连接

            urlConnection.connect();//建立链接

            is = urlConnection.getInputStream();//获取流
            fos = new FileOutputStream("File\\1.png");

            byte[] buffer = new byte[1024];
            int len;
            while((len = is.read(buffer)) != -1){
                fos.write(buffer,0,len);
            }

            System.out.println("下载完成");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭资源
            if(is != null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(urlConnection != null){
                urlConnection.disconnect();//关闭HttpURLConnection
            }
        }

    }
}

